// 给定一个包含非负整数的数组，你的任务是统计其中可以组成三角形三条边的三元组个数。

// 示例 1:
// 输入: [2,2,3,4]
// 输出: 3
// 解释:
// 有效的组合是: 
// 2,3,4 (使用第一个 2)
// 2,3,4 (使用第二个 2)
// 2,2,3

// 注意:
//     数组长度不超过1000。
//     数组里整数的范围为 [0, 1000]。

//////用双指针比较简单
/**
 * @param {number[]} nums
 * @return {number}
 */
var triangleNumber = function(nums) {
    nums.sort((a, b)=>{
        return a - b;
    });
    let result = 0;
    let n = nums.length;
    for(let i = n - 1; i >= 2; i--) {
        let left = 0, right = i - 1;
        while(left < right) {
            if (nums[left] + nums[right] > nums[i]) {
                result += right - left;
                --right;
            } else {
                ++left;
            }
        }
    }
    return result;
};
console.log(triangleNumber([2,2,3,4]));


